{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"Healthcare_Graph_NLU_COVID_Tigergraph.ipynb","provenance":[],"collapsed_sections":[],"toc_visible":true},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","metadata":{"id":"o8rERttgz2WZ"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/webinars_conferences_etc/graph_ai_summit/Healthcare_Graph_NLU_COVID_Tigergraph.ipynb)\n","\n","\n","<div>\n","<img src=\"http://ckl-it.de/wp-content/uploads/2021/04/WhatsApp-Image-2021-04-19-at-7.35.04-AM.jpeg\" width=\"400\"  height=\"250\" >\n","</div>\n","\n","\n","\n","# Graph NLU 20 Minutes Crashcourse - State of the Art Text Mining for Graphs\n","This notebook is used to feed the `Tiger Graph` engine with features derived by `John Snow Labs` python `NLU` library\n","This short notebook will teach you a lot of things!\n","- Sentiment classification, binary, multi class and regressive\n","- Extract Parts of Speech (POS)\n","- Extract Named Entities (NER)\n","- Extract Keywords (YAKE!)\n","- Answer Open and Closed book questions with T5\n","- Summarize text and more with Multi task T5\n","- Translate text with Microsofts Marian Model\n","- Train a Multi Lingual Classifier for 100+ languages from a dataset with just one language\n","- Extract Medical Named Entities (Medical NER)\n","- Resolve Medical Entities to codes\n","- Classify and extrat relations between entities\n","- \n","\n","\n","## More ressources \n","- [Join our Slack](https://join.slack.com/t/spark-nlp/shared_invite/zt-lutct9gm-kuUazcyFKhuGY3_0AMkxqA)\n","- [NLU Website](https://nlu.johnsnowlabs.com/)\n","- [NLU Github](https://github.com/JohnSnowLabs/nlu)\n","- [Many more NLU example tutorials](https://github.com/JohnSnowLabs/nlu/tree/master/examples)\n","- [Overview of every powerful nlu 1-liner](https://nlu.johnsnowlabs.com/docs/en/examples)\n","- [Checkout the Modelshub for an overview of all models](https://nlp.johnsnowlabs.com/models) \n","- [Checkout the NLU Namespace where you can find every model as a tabel](https://nlu.johnsnowlabs.com/docs/en/spellbook)\n","- [Intro to NLU article](https://medium.com/spark-nlp/1-line-of-code-350-nlp-models-with-john-snow-labs-nlu-in-python-2f1c55bba619)\n","- [Indepth and easy Sentence Similarity Tutorial, with StackOverflow Questions using BERTology embeddings](https://medium.com/spark-nlp/easy-sentence-similarity-with-bert-sentence-embeddings-using-john-snow-labs-nlu-ea078deb6ebf)\n","- [1 line of Python code for BERT, ALBERT, ELMO, ELECTRA, XLNET, GLOVE, Part of Speech with NLU and t-SNE](https://medium.com/spark-nlp/1-line-of-code-for-bert-albert-elmo-electra-xlnet-glove-part-of-speech-with-nlu-and-t-sne-9ebcd5379cd)"]},{"cell_type":"markdown","metadata":{"id":"GAVkEjc2l_jv"},"source":["# Install NLU and authorize licensed enviroment\n","- Run the install script\n","- Upload your`spark_nlp_for_healthcare.json` \n","- Have fun\n","\n","\n","#### Instructions for non Google Colab enviroment :\n","- [See the installation guide](https://nlu.johnsnowlabs.com/docs/en/install) and the [Autorization guide](TODO) for detailed instructions  \n","- If you need help or run into troubles, [ping us on slack :)](https://join.slack.com/t/spark-nlp/shared_invite/zt-lutct9gm-kuUazcyFKhuGY3_0AMkxqA) "]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"fjAIW3p2Lhx4","outputId":"3aca4e0e-8f4e-4bf1-e7c4-c3946c1fc2bb","executionInfo":{"status":"ok","timestamp":1650023785732,"user_tz":-300,"elapsed":117175,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["!wget https://setup.johnsnowlabs.com/nlu/colab.sh -O - | bash\n","import nlu"],"execution_count":1,"outputs":[{"output_type":"stream","name":"stdout","text":["--2022-04-15 11:54:27--  https://setup.johnsnowlabs.com/nlu/colab.sh\n","Resolving setup.johnsnowlabs.com (setup.johnsnowlabs.com)... 51.158.130.125\n","Connecting to setup.johnsnowlabs.com (setup.johnsnowlabs.com)|51.158.130.125|:443... connected.\n","HTTP request sent, awaiting response... 302 Moved Temporarily\n","Location: https://raw.githubusercontent.com/JohnSnowLabs/nlu/master/scripts/colab_setup.sh [following]\n","--2022-04-15 11:54:28--  https://raw.githubusercontent.com/JohnSnowLabs/nlu/master/scripts/colab_setup.sh\n","Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.111.133, 185.199.108.133, ...\n","Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 1665 (1.6K) [text/plain]\n","Saving to: ‘STDOUT’\n","\n","-                     0%[                    ]       0  --.-KB/s               Installing  NLU 3.4.3rc2 with  PySpark 3.0.3 and Spark NLP 3.4.2 for Google Colab ...\n","-                   100%[===================>]   1.63K  --.-KB/s    in 0.001s  \n","\n","2022-04-15 11:54:28 (1.45 MB/s) - written to stdout [1665/1665]\n","\n","Get:1 https://cloud.r-project.org/bin/linux/ubuntu bionic-cran40/ InRelease [3,626 B]\n","Ign:2 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  InRelease\n","Get:3 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]\n","Get:4 http://ppa.launchpad.net/c2d4u.team/c2d4u4.0+/ubuntu bionic InRelease [15.9 kB]\n","Hit:5 http://archive.ubuntu.com/ubuntu bionic InRelease\n","Ign:6 https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64  InRelease\n","Get:7 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  Release [696 B]\n","Hit:8 https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64  Release\n","Get:9 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  Release.gpg [836 B]\n","Get:10 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]\n","Hit:11 http://ppa.launchpad.net/cran/libgit2/ubuntu bionic InRelease\n","Get:12 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]\n","Get:13 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu bionic InRelease [15.9 kB]\n","Hit:14 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic InRelease\n","Get:16 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  Packages [953 kB]\n","Get:17 http://ppa.launchpad.net/c2d4u.team/c2d4u4.0+/ubuntu bionic/main Sources [1,947 kB]\n","Get:18 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [1,490 kB]\n","Get:19 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages [2,695 kB]\n","Get:20 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [2,268 kB]\n","Get:21 http://ppa.launchpad.net/c2d4u.team/c2d4u4.0+/ubuntu bionic/main amd64 Packages [996 kB]\n","Get:22 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [3,134 kB]\n","Get:23 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu bionic/main amd64 Packages [45.3 kB]\n","Fetched 13.8 MB in 4s (3,515 kB/s)\n","Reading package lists... Done\n","tar: spark-3.0.2-bin-hadoop2.7.tgz: Cannot open: No such file or directory\n","tar: Error is not recoverable: exiting now\n","\u001b[K     |████████████████████████████████| 209.1 MB 58 kB/s \n","\u001b[K     |████████████████████████████████| 142 kB 48.8 MB/s \n","\u001b[K     |████████████████████████████████| 505 kB 54.2 MB/s \n","\u001b[K     |████████████████████████████████| 198 kB 46.2 MB/s \n","\u001b[?25h  Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n","Collecting nlu_tmp==3.4.3rc10\n","  Downloading nlu_tmp-3.4.3rc10-py3-none-any.whl (510 kB)\n","\u001b[K     |████████████████████████████████| 510 kB 5.2 MB/s \n","\u001b[?25hRequirement already satisfied: dataclasses in /usr/local/lib/python3.7/dist-packages (from nlu_tmp==3.4.3rc10) (0.6)\n","Requirement already satisfied: spark-nlp<3.5.0,>=3.4.2 in /usr/local/lib/python3.7/dist-packages (from nlu_tmp==3.4.3rc10) (3.4.2)\n","Requirement already satisfied: pyarrow>=0.16.0 in /usr/local/lib/python3.7/dist-packages (from nlu_tmp==3.4.3rc10) (6.0.1)\n","Requirement already satisfied: pandas>=1.3.5 in /usr/local/lib/python3.7/dist-packages (from nlu_tmp==3.4.3rc10) (1.3.5)\n","Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from nlu_tmp==3.4.3rc10) (1.21.5)\n","Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas>=1.3.5->nlu_tmp==3.4.3rc10) (2.8.2)\n","Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.7/dist-packages (from pandas>=1.3.5->nlu_tmp==3.4.3rc10) (2018.9)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas>=1.3.5->nlu_tmp==3.4.3rc10) (1.15.0)\n","Installing collected packages: nlu-tmp\n","Successfully installed nlu-tmp-3.4.3rc10\n"]}]},{"cell_type":"markdown","metadata":{"id":"jNw8mtj2jJyS"},"source":["# Simple NLU basics on Strings"]},{"cell_type":"markdown","metadata":{"id":"cr3HrpqX0Lju"},"source":["## Context based spell Checking in 1 line\n","\n","![Spell Check](https://i.imgflip.com/52wb7w.jpg)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":342},"id":"yiU5oCWGz31e","outputId":"28e94045-eaa6-4b6f-f3b9-4e1df10e3cd7","executionInfo":{"status":"ok","timestamp":1650023889409,"user_tz":-300,"elapsed":103697,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["import nlu \n","nlu.load('spell').predict('I also liek to live dangertus')"],"execution_count":2,"outputs":[{"output_type":"stream","name":"stdout","text":["spellcheck_dl download started this may take some time.\n","Approximate size to download 95.1 MB\n","[OK!]\n","sentence_detector_dl download started this may take some time.\n","Approximate size to download 354.6 KB\n","[OK!]\n"]},{"output_type":"execute_result","data":{"text/plain":["       spell      token\n","0          I          I\n","0       also       also\n","0       like       liek\n","0         to         to\n","0       live       live\n","0  dangerous  dangertus"],"text/html":["\n","  <div id=\"df-7238694b-3d5e-4999-a86a-bb506fa7d636\">\n","    <div class=\"colab-df-container\">\n","      <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>spell</th>\n","      <th>token</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>I</td>\n","      <td>I</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>also</td>\n","      <td>also</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>like</td>\n","      <td>liek</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>to</td>\n","      <td>to</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>live</td>\n","      <td>live</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>dangerous</td>\n","      <td>dangertus</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>\n","      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-7238694b-3d5e-4999-a86a-bb506fa7d636')\"\n","              title=\"Convert this dataframe to an interactive table.\"\n","              style=\"display:none;\">\n","        \n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","       width=\"24px\">\n","    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n","    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n","  </svg>\n","      </button>\n","      \n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      flex-wrap:wrap;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","      <script>\n","        const buttonEl =\n","          document.querySelector('#df-7238694b-3d5e-4999-a86a-bb506fa7d636 button.colab-df-convert');\n","        buttonEl.style.display =\n","          google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","        async function convertToInteractive(key) {\n","          const element = document.querySelector('#df-7238694b-3d5e-4999-a86a-bb506fa7d636');\n","          const dataTable =\n","            await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                     [key], {});\n","          if (!dataTable) return;\n","\n","          const docLinkHtml = 'Like what you see? Visit the ' +\n","            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","            + ' to learn more about interactive tables.';\n","          element.innerHTML = '';\n","          dataTable['output_type'] = 'display_data';\n","          await google.colab.output.renderOutput(dataTable, element);\n","          const docLink = document.createElement('div');\n","          docLink.innerHTML = docLinkHtml;\n","          element.appendChild(docLink);\n","        }\n","      </script>\n","    </div>\n","  </div>\n","  "]},"metadata":{},"execution_count":2}]},{"cell_type":"markdown","metadata":{"id":"EbRSJNNE0XH7"},"source":["## Binary Sentiment classification in 1 Line\n","![Binary Sentiment](https://cdn.pixabay.com/photo/2015/11/13/10/07/smiley-1041796_960_720.jpg)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":298},"id":"Kr7JAcnr0Khb","outputId":"aa55eafa-08a7-4be9-d939-d1996c8ff3af","executionInfo":{"status":"ok","timestamp":1650023907540,"user_tz":-300,"elapsed":18148,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["nlu.load('sentiment').predict('I love NLU and rainy days!')"],"execution_count":3,"outputs":[{"output_type":"stream","name":"stdout","text":["sentimentdl_glove_imdb download started this may take some time.\n","Approximate size to download 8.7 MB\n","[OK!]\n","glove_100d download started this may take some time.\n","Approximate size to download 145.3 MB\n","[OK!]\n","sentence_detector_dl download started this may take some time.\n","Approximate size to download 354.6 KB\n","[OK!]\n"]},{"output_type":"execute_result","data":{"text/plain":["                     sentence  \\\n","0  I love NLU and rainy days!   \n","\n","     sentence_embedding_sentence_embedding_converter sentiment  \\\n","0  [0.015170135535299778, 0.3010264039039612, 0.3...       pos   \n","\n","  sentiment_confidence                               word_embedding_glove  \n","0             0.999995  [[-0.046539001166820526, 0.6196600198745728, 0...  "],"text/html":["\n","  <div id=\"df-e40f2d0c-d460-4a1b-8f0e-698aa7eddc88\">\n","    <div class=\"colab-df-container\">\n","      <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>sentence</th>\n","      <th>sentence_embedding_sentence_embedding_converter</th>\n","      <th>sentiment</th>\n","      <th>sentiment_confidence</th>\n","      <th>word_embedding_glove</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>I love NLU and rainy days!</td>\n","      <td>[0.015170135535299778, 0.3010264039039612, 0.3...</td>\n","      <td>pos</td>\n","      <td>0.999995</td>\n","      <td>[[-0.046539001166820526, 0.6196600198745728, 0...</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>\n","      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-e40f2d0c-d460-4a1b-8f0e-698aa7eddc88')\"\n","              title=\"Convert this dataframe to an interactive table.\"\n","              style=\"display:none;\">\n","        \n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","       width=\"24px\">\n","    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n","    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n","  </svg>\n","      </button>\n","      \n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      flex-wrap:wrap;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","      <script>\n","        const buttonEl =\n","          document.querySelector('#df-e40f2d0c-d460-4a1b-8f0e-698aa7eddc88 button.colab-df-convert');\n","        buttonEl.style.display =\n","          google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","        async function convertToInteractive(key) {\n","          const element = document.querySelector('#df-e40f2d0c-d460-4a1b-8f0e-698aa7eddc88');\n","          const dataTable =\n","            await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                     [key], {});\n","          if (!dataTable) return;\n","\n","          const docLinkHtml = 'Like what you see? Visit the ' +\n","            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","            + ' to learn more about interactive tables.';\n","          element.innerHTML = '';\n","          dataTable['output_type'] = 'display_data';\n","          await google.colab.output.renderOutput(dataTable, element);\n","          const docLink = document.createElement('div');\n","          docLink.innerHTML = docLinkHtml;\n","          element.appendChild(docLink);\n","        }\n","      </script>\n","    </div>\n","  </div>\n","  "]},"metadata":{},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"p0z4S7kF0aeT"},"source":["## Part of Speech (POS) in 1 line\n","![Parts of Speech](https://image.shutterstock.com/image-photo/blackboard-background-written-colorful-chalk-600w-1166166529.jpg)\n","\n","|Tag |Description | Example|\n","|------|------------|------|\n","|CC| Coordinating conjunction | This batch of mushroom stew is savory **and** delicious    |\n","|CD| Cardinal number | Here are **five** coins    |\n","|DT| Determiner | **The** bunny went home    |\n","|EX| Existential there | **There** is a storm coming    |\n","|FW| Foreign word | I'm having a **déjà vu**    |\n","|IN| Preposition or subordinating conjunction | He is cleverer **than** I am   |\n","|JJ| Adjective | She wore a **beautiful** dress    |\n","|JJR| Adjective, comparative | My house is **bigger** than yours    |\n","|JJS| Adjective, superlative | I am the **shortest** person in my family   |\n","|LS| List item marker | A number of things need to be considered before starting a business **,** such as premises **,** finance **,** product demand **,** staffing and access to customers |\n","|MD| Modal | You **must** stop when the traffic lights turn red    |\n","|NN| Noun, singular or mass | The **dog** likes to run    |\n","|NNS| Noun, plural | The **cars** are fast    |\n","|NNP| Proper noun, singular | I ordered the chair from **Amazon**  |\n","|NNPS| Proper noun, plural | We visted the **Kennedys**   |\n","|PDT| Predeterminer | **Both** the children had a toy   |\n","|POS| Possessive ending | I built the dog'**s** house    |\n","|PRP| Personal pronoun | **You** need to stop    |\n","|PRP$| Possessive pronoun | Remember not to judge a book by **its** cover |\n","|RB| Adverb | The dog barks **loudly**    |\n","|RBR| Adverb, comparative | Could you sing more **quietly** please?   |\n","|RBS| Adverb, superlative | Everyone in the race ran fast, but John ran **the fastest** of all    |\n","|RP| Particle | He ate **up** all his dinner    |\n","|SYM| Symbol | What are you doing **?**    |\n","|TO| to | Please send it back **to** me    |\n","|UH| Interjection | **Wow!** You look gorgeous    |\n","|VB| Verb, base form | We **play** soccer |\n","|VBD| Verb, past tense | I **worked** at a restaurant    |\n","|VBG| Verb, gerund or present participle | **Smoking** kills people   |\n","|VBN| Verb, past participle | She has **done** her homework    |\n","|VBP| Verb, non-3rd person singular present | You **flit** from place to place    |\n","|VBZ| Verb, 3rd person singular present | He never **calls** me    |\n","|WDT| Wh-determiner | The store honored the complaints, **which** were less than 25 days old    |\n","|WP| Wh-pronoun | **Who** can help me?    |\n","|WP\\$| Possessive wh-pronoun | **Whose** fault is it?    |\n","|WRB| Wh-adverb | **Where** are you going?  |"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":467},"id":"49-eCSZQ0cQa","outputId":"f1611137-f757-4089-92a8-f6b1183e0879","executionInfo":{"status":"ok","timestamp":1650023926450,"user_tz":-300,"elapsed":18936,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["nlu.load('pos').predict('POS assigns each token in a sentence a grammatical label')"],"execution_count":4,"outputs":[{"output_type":"stream","name":"stdout","text":["pos_anc download started this may take some time.\n","Approximate size to download 3.9 MB\n","[OK!]\n","sentence_detector_dl download started this may take some time.\n","Approximate size to download 354.6 KB\n","[OK!]\n"]},{"output_type":"execute_result","data":{"text/plain":["   pos        token\n","0  NNP          POS\n","0  NNS      assigns\n","0   DT         each\n","0   NN        token\n","0   IN           in\n","0   DT            a\n","0   NN     sentence\n","0   DT            a\n","0   JJ  grammatical\n","0   NN        label"],"text/html":["\n","  <div id=\"df-ade0f454-6df9-47d0-a1cb-2bdf138caae9\">\n","    <div class=\"colab-df-container\">\n","      <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>pos</th>\n","      <th>token</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>NNP</td>\n","      <td>POS</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>NNS</td>\n","      <td>assigns</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>DT</td>\n","      <td>each</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>NN</td>\n","      <td>token</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>IN</td>\n","      <td>in</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>DT</td>\n","      <td>a</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>NN</td>\n","      <td>sentence</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>DT</td>\n","      <td>a</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>JJ</td>\n","      <td>grammatical</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>NN</td>\n","      <td>label</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>\n","      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-ade0f454-6df9-47d0-a1cb-2bdf138caae9')\"\n","              title=\"Convert this dataframe to an interactive table.\"\n","              style=\"display:none;\">\n","        \n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","       width=\"24px\">\n","    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n","    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n","  </svg>\n","      </button>\n","      \n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      flex-wrap:wrap;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","      <script>\n","        const buttonEl =\n","          document.querySelector('#df-ade0f454-6df9-47d0-a1cb-2bdf138caae9 button.colab-df-convert');\n","        buttonEl.style.display =\n","          google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","        async function convertToInteractive(key) {\n","          const element = document.querySelector('#df-ade0f454-6df9-47d0-a1cb-2bdf138caae9');\n","          const dataTable =\n","            await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                     [key], {});\n","          if (!dataTable) return;\n","\n","          const docLinkHtml = 'Like what you see? Visit the ' +\n","            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","            + ' to learn more about interactive tables.';\n","          element.innerHTML = '';\n","          dataTable['output_type'] = 'display_data';\n","          await google.colab.output.renderOutput(dataTable, element);\n","          const docLink = document.createElement('div');\n","          docLink.innerHTML = docLinkHtml;\n","          element.appendChild(docLink);\n","        }\n","      </script>\n","    </div>\n","  </div>\n","  "]},"metadata":{},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"2-ih6TXc0d6x"},"source":["## Named Entity Recognition (NER) in 1 line\n","\n","![NER](http://ckl-it.de/wp-content/uploads/2021/02/ner-1.png)\n","\n","|Type | \tDescription |\n","|------|--------------|\n","| PERSON | \tPeople, including fictional like **Harry Potter** |\n","| NORP | \tNationalities or religious or political groups like the **Germans** |\n","| FAC | \tBuildings, airports, highways, bridges, etc. like **New York Airport** |\n","| ORG | \tCompanies, agencies, institutions, etc. like **Microsoft** |\n","| GPE | \tCountries, cities, states. like **Germany** |\n","| LOC | \tNon-GPE locations, mountain ranges, bodies of water. Like the **Sahara desert**|\n","| PRODUCT | \tObjects, vehicles, foods, etc. (Not services.) like **playstation** |\n","| EVENT | \tNamed hurricanes, battles, wars, sports events, etc. like **hurricane Katrina**|\n","| WORK_OF_ART | \tTitles of books, songs, etc. Like **Mona Lisa** |\n","| LAW | \tNamed documents made into laws. Like : **Declaration of Independence** |\n","| LANGUAGE | \tAny named language. Like **Turkish**|\n","| DATE | \tAbsolute or relative dates or periods. Like every second **friday**|\n","| TIME | \tTimes smaller than a day. Like **every minute**|\n","| PERCENT | \tPercentage, including ”%“. Like **55%** of workers enjoy their work |\n","| MONEY | \tMonetary values, including unit. Like **50$** for those pants |\n","| QUANTITY | \tMeasurements, as of weight or distance. Like this person weights **50kg** |\n","| ORDINAL | \t“first”, “second”, etc. Like David placed **first** in the tournament |\n","| CARDINAL | \tNumerals that do not fall under another type. Like **hundreds** of models are avaiable in NLU |\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":340},"id":"zoDjsSxx0eJY","outputId":"08e23666-8ac8-4fa3-a2d5-b3f8b4df1f8c","executionInfo":{"status":"ok","timestamp":1650023945682,"user_tz":-300,"elapsed":19254,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["nlu.load('ner').predict(\"John Snow Labs congratulates the Amarican John Biden to winning the American election!\", output_level='chunk')"],"execution_count":5,"outputs":[{"output_type":"stream","name":"stdout","text":["onto_recognize_entities_sm download started this may take some time.\n","Approx size to download 160.1 MB\n","[OK!]\n"]},{"output_type":"execute_result","data":{"text/plain":["                                            document    entities_ner  \\\n","0  John Snow Labs congratulates the Amarican John...  John Snow Labs   \n","0  John Snow Labs congratulates the Amarican John...    the Amarican   \n","0  John Snow Labs congratulates the Amarican John...      John Biden   \n","0  John Snow Labs congratulates the Amarican John...        American   \n","\n","  entities_ner_class entities_ner_confidence  \\\n","0             PERSON               0.8046667   \n","0             PERSON              0.46429998   \n","0             PERSON                 0.83775   \n","0               NORP                  0.9877   \n","\n","                                  word_embedding_ner  \n","0  [[-0.2747400104999542, 0.48680999875068665, -0...  \n","0  [[-0.2747400104999542, 0.48680999875068665, -0...  \n","0  [[-0.2747400104999542, 0.48680999875068665, -0...  \n","0  [[-0.2747400104999542, 0.48680999875068665, -0...  "],"text/html":["\n","  <div id=\"df-6cdd3a84-5d1b-4aa4-9d20-39d22c6cfbfc\">\n","    <div class=\"colab-df-container\">\n","      <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>document</th>\n","      <th>entities_ner</th>\n","      <th>entities_ner_class</th>\n","      <th>entities_ner_confidence</th>\n","      <th>word_embedding_ner</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>John Snow Labs congratulates the Amarican John...</td>\n","      <td>John Snow Labs</td>\n","      <td>PERSON</td>\n","      <td>0.8046667</td>\n","      <td>[[-0.2747400104999542, 0.48680999875068665, -0...</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>John Snow Labs congratulates the Amarican John...</td>\n","      <td>the Amarican</td>\n","      <td>PERSON</td>\n","      <td>0.46429998</td>\n","      <td>[[-0.2747400104999542, 0.48680999875068665, -0...</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>John Snow Labs congratulates the Amarican John...</td>\n","      <td>John Biden</td>\n","      <td>PERSON</td>\n","      <td>0.83775</td>\n","      <td>[[-0.2747400104999542, 0.48680999875068665, -0...</td>\n","    </tr>\n","    <tr>\n","      <th>0</th>\n","      <td>John Snow Labs congratulates the Amarican John...</td>\n","      <td>American</td>\n","      <td>NORP</td>\n","      <td>0.9877</td>\n","      <td>[[-0.2747400104999542, 0.48680999875068665, -0...</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>\n","      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-6cdd3a84-5d1b-4aa4-9d20-39d22c6cfbfc')\"\n","              title=\"Convert this dataframe to an interactive table.\"\n","              style=\"display:none;\">\n","        \n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","       width=\"24px\">\n","    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n","    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n","  </svg>\n","      </button>\n","      \n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      flex-wrap:wrap;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","      <script>\n","        const buttonEl =\n","          document.querySelector('#df-6cdd3a84-5d1b-4aa4-9d20-39d22c6cfbfc button.colab-df-convert');\n","        buttonEl.style.display =\n","          google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","        async function convertToInteractive(key) {\n","          const element = document.querySelector('#df-6cdd3a84-5d1b-4aa4-9d20-39d22c6cfbfc');\n","          const dataTable =\n","            await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                     [key], {});\n","          if (!dataTable) return;\n","\n","          const docLinkHtml = 'Like what you see? Visit the ' +\n","            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","            + ' to learn more about interactive tables.';\n","          element.innerHTML = '';\n","          dataTable['output_type'] = 'display_data';\n","          await google.colab.output.renderOutput(dataTable, element);\n","          const docLink = document.createElement('div');\n","          docLink.innerHTML = docLinkHtml;\n","          element.appendChild(docLink);\n","        }\n","      </script>\n","    </div>\n","  </div>\n","  "]},"metadata":{},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"RcvxNNeXt83u"},"source":["# Let's apply NLU to a COVID dataset!\n","\n","\n","<div>\n","    <img src=\"http://ckl-it.de/wp-content/uploads/2021/04/WhatsApp-Image-2021-04-19-at-7.35.04-AM-1.jpeg\" width=\"600\"  height=\"450\" >\n","    </div>"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"lKbaoFLMsIRA","outputId":"6d85b5ad-0c6c-43ab-814f-2350277d6441","executionInfo":{"status":"ok","timestamp":1650023949803,"user_tz":-300,"elapsed":4137,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/04/covid19_tweets.csv\n","import pandas as pd\n","df = pd.read_csv('covid19_tweets.csv')\n","df"],"execution_count":6,"outputs":[{"output_type":"stream","name":"stdout","text":["--2022-04-15 11:59:05--  http://ckl-it.de/wp-content/uploads/2021/04/covid19_tweets.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 35085653 (33M) [text/csv]\n","Saving to: ‘covid19_tweets.csv’\n","\n","covid19_tweets.csv  100%[===================>]  33.46M  12.8MB/s    in 2.6s    \n","\n","2022-04-15 11:59:07 (12.8 MB/s) - ‘covid19_tweets.csv’ saved [35085653/35085653]\n","\n"]},{"output_type":"execute_result","data":{"text/plain":["       Unnamed: 0                       user_name         user_location  \\\n","0               0                          ᏉᎥ☻լꂅϮ            astroworld   \n","1               1                   Tom Basile 🇺🇸          New York, NY   \n","2               2                 Time4fisticuffs      Pewee Valley, KY   \n","3               3                     ethel mertz  Stuck in the Middle    \n","4               4                        DIPR-J&K     Jammu and Kashmir   \n","...           ...                             ...                   ...   \n","89995       89995       Airdrop Distribution News                   NaN   \n","89996       89996  Malcolm Montgomery #WallOfVets                   NaN   \n","89997       89997                   PhatzNewsRoom         North America   \n","89998       89998                   B&NES Council               BA1 5AW   \n","89999       89999                        Politiko                   NaN   \n","\n","                                        user_description         user_created  \\\n","0      wednesday addams as a disney princess keepin i...  2017-05-26 05:46:42   \n","1      Husband, Father, Columnist & Commentator. Auth...  2009-04-16 20:06:23   \n","2      #Christian #Catholic #Conservative #Reagan #Re...  2009-02-28 18:57:41   \n","3      #Browns #Indians #ClevelandProud #[]_[] #Cavs ...  2019-03-07 01:45:06   \n","4      🖊️Official Twitter handle of Department of Inf...  2017-02-12 06:45:15   \n","...                                                  ...                  ...   \n","89995  Do simple social tasks for projects , grab fre...  2020-01-06 13:24:15   \n","89996  #DEMS #TheResistance #VetsResistSquadron #Vets...  2014-05-23 13:53:59   \n","89997  Breaking News, News, Music, Sports, Politics, ...  2010-11-27 15:34:06   \n","89998  Bath & North East Somerset Council account; wi...  2009-06-19 10:59:31   \n","89999  Blocked by PLDT-SMART. Banned  by Rappler. New...  2014-05-02 09:44:25   \n","\n","       user_followers  user_friends  user_favourites  user_verified  \\\n","0                 624           950            18775          False   \n","1                2253          1677               24           True   \n","2                9275          9525             7254          False   \n","3                 197           987             1488          False   \n","4              101009           168              101          False   \n","...               ...           ...              ...            ...   \n","89995             226           994              307          False   \n","89996           84046         72631            26916          False   \n","89997            6845           994            28801          False   \n","89998           20114          8967             1906           True   \n","89999           10398           114            11593          False   \n","\n","                      date                                               text  \\\n","0      2020-07-25 12:27:21  If I smelled the scent of hand sanitizers toda...   \n","1      2020-07-25 12:27:17  Hey @Yankees @YankeesPR and @MLB - wouldn't it...   \n","2      2020-07-25 12:27:14  @diane3443 @wdunlap @realDonaldTrump Trump nev...   \n","3      2020-07-25 12:27:10  @brookbanktv The one gift #COVID19 has give me...   \n","4      2020-07-25 12:27:08  25 July : Media Bulletin on Novel #CoronaVirus...   \n","...                    ...                                                ...   \n","89995  2020-08-08 10:22:11  👇work 1min &amp; get free 5.5$ coin👇\\n\\nZelf A...   \n","89996  2020-08-08 10:22:06  @Anons_daddyO @psime @WeeksNoah @ljvilardo @un...   \n","89997  2020-08-08 10:22:05  Is France helping Lebanon, or trying to reconq...   \n","89998  2020-08-08 10:21:59  Extra weight puts extra pressure on your body,...   \n","89999  2020-08-08 10:21:54  House reports latest Covid-19 case, total now ...   \n","\n","                                                hashtags               source  \\\n","0                                                    NaN   Twitter for iPhone   \n","1                                                    NaN  Twitter for Android   \n","2                                            ['COVID19']  Twitter for Android   \n","3                                            ['COVID19']   Twitter for iPhone   \n","4                      ['CoronaVirusUpdates', 'COVID19']  Twitter for Android   \n","...                                                  ...                  ...   \n","89995                                                NaN  Twitter for Android   \n","89996                                                NaN      Twitter Web App   \n","89997  ['BreakingNews', 'Lebanon', 'Beirut', 'PMHassa...      Twitter Web App   \n","89998                                                NaN       CrowdControlHQ   \n","89999                        ['PolitikoNews', 'covid19']            TweetDeck   \n","\n","       is_retweet  \n","0           False  \n","1           False  \n","2           False  \n","3           False  \n","4           False  \n","...           ...  \n","89995       False  \n","89996       False  \n","89997       False  \n","89998       False  \n","89999       False  \n","\n","[90000 rows x 14 columns]"],"text/html":["\n","  <div id=\"df-b99bc0de-8f01-4dac-b9bf-26a33f4e5d3a\">\n","    <div class=\"colab-df-container\">\n","      <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>Unnamed: 0</th>\n","      <th>user_name</th>\n","      <th>user_location</th>\n","      <th>user_description</th>\n","      <th>user_created</th>\n","      <th>user_followers</th>\n","      <th>user_friends</th>\n","      <th>user_favourites</th>\n","      <th>user_verified</th>\n","      <th>date</th>\n","      <th>text</th>\n","      <th>hashtags</th>\n","      <th>source</th>\n","      <th>is_retweet</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0</td>\n","      <td>ᏉᎥ☻լꂅϮ</td>\n","      <td>astroworld</td>\n","      <td>wednesday addams as a disney princess keepin i...</td>\n","      <td>2017-05-26 05:46:42</td>\n","      <td>624</td>\n","      <td>950</td>\n","      <td>18775</td>\n","      <td>False</td>\n","      <td>2020-07-25 12:27:21</td>\n","      <td>If I smelled the scent of hand sanitizers toda...</td>\n","      <td>NaN</td>\n","      <td>Twitter for iPhone</td>\n","      <td>False</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>1</td>\n","      <td>Tom Basile 🇺🇸</td>\n","      <td>New York, NY</td>\n","      <td>Husband, Father, Columnist &amp; Commentator. Auth...</td>\n","      <td>2009-04-16 20:06:23</td>\n","      <td>2253</td>\n","      <td>1677</td>\n","      <td>24</td>\n","      <td>True</td>\n","      <td>2020-07-25 12:27:17</td>\n","      <td>Hey @Yankees @YankeesPR and @MLB - wouldn't it...</td>\n","      <td>NaN</td>\n","      <td>Twitter for Android</td>\n","      <td>False</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>2</td>\n","      <td>Time4fisticuffs</td>\n","      <td>Pewee Valley, KY</td>\n","      <td>#Christian #Catholic #Conservative #Reagan #Re...</td>\n","      <td>2009-02-28 18:57:41</td>\n","      <td>9275</td>\n","      <td>9525</td>\n","      <td>7254</td>\n","      <td>False</td>\n","      <td>2020-07-25 12:27:14</td>\n","      <td>@diane3443 @wdunlap @realDonaldTrump Trump nev...</td>\n","      <td>['COVID19']</td>\n","      <td>Twitter for Android</td>\n","      <td>False</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>3</td>\n","      <td>ethel mertz</td>\n","      <td>Stuck in the Middle</td>\n","      <td>#Browns #Indians #ClevelandProud #[]_[] #Cavs ...</td>\n","      <td>2019-03-07 01:45:06</td>\n","      <td>197</td>\n","      <td>987</td>\n","      <td>1488</td>\n","      <td>False</td>\n","      <td>2020-07-25 12:27:10</td>\n","      <td>@brookbanktv The one gift #COVID19 has give me...</td>\n","      <td>['COVID19']</td>\n","      <td>Twitter for iPhone</td>\n","      <td>False</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>4</td>\n","      <td>DIPR-J&amp;K</td>\n","      <td>Jammu and Kashmir</td>\n","      <td>🖊️Official Twitter handle of Department of Inf...</td>\n","      <td>2017-02-12 06:45:15</td>\n","      <td>101009</td>\n","      <td>168</td>\n","      <td>101</td>\n","      <td>False</td>\n","      <td>2020-07-25 12:27:08</td>\n","      <td>25 July : Media Bulletin on Novel #CoronaVirus...</td>\n","      <td>['CoronaVirusUpdates', 'COVID19']</td>\n","      <td>Twitter for Android</td>\n","      <td>False</td>\n","    </tr>\n","    <tr>\n","      <th>...</th>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","      <td>...</td>\n","    </tr>\n","    <tr>\n","      <th>89995</th>\n","      <td>89995</td>\n","      <td>Airdrop Distribution News</td>\n","      <td>NaN</td>\n","      <td>Do simple social tasks for projects , grab fre...</td>\n","      <td>2020-01-06 13:24:15</td>\n","      <td>226</td>\n","      <td>994</td>\n","      <td>307</td>\n","      <td>False</td>\n","      <td>2020-08-08 10:22:11</td>\n","      <td>👇work 1min &amp;amp; get free 5.5$ coin👇\\n\\nZelf A...</td>\n","      <td>NaN</td>\n","      <td>Twitter for Android</td>\n","      <td>False</td>\n","    </tr>\n","    <tr>\n","      <th>89996</th>\n","      <td>89996</td>\n","      <td>Malcolm Montgomery #WallOfVets</td>\n","      <td>NaN</td>\n","      <td>#DEMS #TheResistance #VetsResistSquadron #Vets...</td>\n","      <td>2014-05-23 13:53:59</td>\n","      <td>84046</td>\n","      <td>72631</td>\n","      <td>26916</td>\n","      <td>False</td>\n","      <td>2020-08-08 10:22:06</td>\n","      <td>@Anons_daddyO @psime @WeeksNoah @ljvilardo @un...</td>\n","      <td>NaN</td>\n","      <td>Twitter Web App</td>\n","      <td>False</td>\n","    </tr>\n","    <tr>\n","      <th>89997</th>\n","      <td>89997</td>\n","      <td>PhatzNewsRoom</td>\n","      <td>North America</td>\n","      <td>Breaking News, News, Music, Sports, Politics, ...</td>\n","      <td>2010-11-27 15:34:06</td>\n","      <td>6845</td>\n","      <td>994</td>\n","      <td>28801</td>\n","      <td>False</td>\n","      <td>2020-08-08 10:22:05</td>\n","      <td>Is France helping Lebanon, or trying to reconq...</td>\n","      <td>['BreakingNews', 'Lebanon', 'Beirut', 'PMHassa...</td>\n","      <td>Twitter Web App</td>\n","      <td>False</td>\n","    </tr>\n","    <tr>\n","      <th>89998</th>\n","      <td>89998</td>\n","      <td>B&amp;NES Council</td>\n","      <td>BA1 5AW</td>\n","      <td>Bath &amp; North East Somerset Council account; wi...</td>\n","      <td>2009-06-19 10:59:31</td>\n","      <td>20114</td>\n","      <td>8967</td>\n","      <td>1906</td>\n","      <td>True</td>\n","      <td>2020-08-08 10:21:59</td>\n","      <td>Extra weight puts extra pressure on your body,...</td>\n","      <td>NaN</td>\n","      <td>CrowdControlHQ</td>\n","      <td>False</td>\n","    </tr>\n","    <tr>\n","      <th>89999</th>\n","      <td>89999</td>\n","      <td>Politiko</td>\n","      <td>NaN</td>\n","      <td>Blocked by PLDT-SMART. Banned  by Rappler. New...</td>\n","      <td>2014-05-02 09:44:25</td>\n","      <td>10398</td>\n","      <td>114</td>\n","      <td>11593</td>\n","      <td>False</td>\n","      <td>2020-08-08 10:21:54</td>\n","      <td>House reports latest Covid-19 case, total now ...</td>\n","      <td>['PolitikoNews', 'covid19']</td>\n","      <td>TweetDeck</td>\n","      <td>False</td>\n","    </tr>\n","  </tbody>\n","</table>\n","<p>90000 rows × 14 columns</p>\n","</div>\n","      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-b99bc0de-8f01-4dac-b9bf-26a33f4e5d3a')\"\n","              title=\"Convert this dataframe to an interactive table.\"\n","              style=\"display:none;\">\n","        \n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","       width=\"24px\">\n","    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n","    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n","  </svg>\n","      </button>\n","      \n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      flex-wrap:wrap;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","      <script>\n","        const buttonEl =\n","          document.querySelector('#df-b99bc0de-8f01-4dac-b9bf-26a33f4e5d3a button.colab-df-convert');\n","        buttonEl.style.display =\n","          google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","        async function convertToInteractive(key) {\n","          const element = document.querySelector('#df-b99bc0de-8f01-4dac-b9bf-26a33f4e5d3a');\n","          const dataTable =\n","            await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                     [key], {});\n","          if (!dataTable) return;\n","\n","          const docLinkHtml = 'Like what you see? Visit the ' +\n","            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","            + ' to learn more about interactive tables.';\n","          element.innerHTML = '';\n","          dataTable['output_type'] = 'display_data';\n","          await google.colab.output.renderOutput(dataTable, element);\n","          const docLink = document.createElement('div');\n","          docLink.innerHTML = docLinkHtml;\n","          element.appendChild(docLink);\n","        }\n","      </script>\n","    </div>\n","  </div>\n","  "]},"metadata":{},"execution_count":6}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":758},"id":"YWjXqWlFLGOB","outputId":"61c12df4-b6c9-4a07-fd99-77f27401a62f","executionInfo":{"status":"ok","timestamp":1650024077314,"user_tz":-300,"elapsed":2420,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["df.hashtags = df.hashtags.astype(str)\n","df[\"hashtags\"][(df[\"hashtags\"] != \"nan\")].apply(eval).explode().value_counts()[:50].plot.barh(figsize=(20,14), title='Top 50 Hashtag Distribution of COVID dataset')\n"],"execution_count":10,"outputs":[{"output_type":"execute_result","data":{"text/plain":["<matplotlib.axes._subplots.AxesSubplot at 0x7f2a8cfb3950>"]},"metadata":{},"execution_count":10},{"output_type":"display_data","data":{"text/plain":["<Figure size 1440x1008 with 1 Axes>"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"AMFwC0jX_dCT"},"source":["## General NER on a COVID News dataset\n","### The **NER** model which you can load via `nlu.load('ner')` recognizes 18 different classes in your dataset.\n","We set output level to chunk, so that we get 1 row per NER class.\n","\n","\n","#### Predicted entities:\n","\n","\n","NER is avaiable in many languages, which you can [find in the John Snow Labs Modelshub](https://nlp.johnsnowlabs.com/models)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"aUGAomeusNVv","outputId":"f2566bb8-6f86-4aa4-a63e-32120bb113c0","executionInfo":{"status":"error","timestamp":1650025387012,"user_tz":-300,"elapsed":1300315,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["ner_df = nlu.load('ner').predict(df, output_level = 'chunk')\n","ner_df "],"execution_count":11,"outputs":[{"output_type":"stream","name":"stdout","text":["onto_recognize_entities_sm download started this may take some time.\n","Approx size to download 160.1 MB\n","[OK!]\n"]},{"output_type":"stream","name":"stderr","text":["----------------------------------------\n","Exception happened during processing of request from ('127.0.0.1', 49716)\n","ERROR:root:Exception while sending command.\n","Traceback (most recent call last):\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1207, in send_command\n","    raise Py4JNetworkError(\"Answer from Java side is empty\")\n","py4j.protocol.Py4JNetworkError: Answer from Java side is empty\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1033, in send_command\n","    response = connection.send_command(command)\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1212, in send_command\n","    \"Error while receiving\", e, proto.ERROR_ON_RECEIVE)\n","py4j.protocol.Py4JNetworkError: Error while receiving\n","ERROR:root:Exception while sending command.\n","Traceback (most recent call last):\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1207, in send_command\n","    raise Py4JNetworkError(\"Answer from Java side is empty\")\n","py4j.protocol.Py4JNetworkError: Answer from Java side is empty\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1033, in send_command\n","    response = connection.send_command(command)\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1212, in send_command\n","    \"Error while receiving\", e, proto.ERROR_ON_RECEIVE)\n","py4j.protocol.Py4JNetworkError: Error while receiving\n","Traceback (most recent call last):\n","  File \"/usr/lib/python3.7/socketserver.py\", line 316, in _handle_request_noblock\n","    self.process_request(request, client_address)\n","  File \"/usr/lib/python3.7/socketserver.py\", line 347, in process_request\n","    self.finish_request(request, client_address)\n","  File \"/usr/lib/python3.7/socketserver.py\", line 360, in finish_request\n","    self.RequestHandlerClass(request, client_address, self)\n","  File \"/usr/lib/python3.7/socketserver.py\", line 720, in __init__\n","    self.handle()\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/accumulators.py\", line 268, in handle\n","    poll(accum_updates)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/accumulators.py\", line 241, in poll\n","    if func():\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/accumulators.py\", line 245, in accum_updates\n","    num_updates = read_int(self.rfile)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/serializers.py\", line 595, in read_int\n","    raise EOFError\n","EOFError\n","----------------------------------------\n","Exception occured\n","Traceback (most recent call last):\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 172, in __predict__\n","    drop_irrelevant_cols, return_spark_df, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 35, in __predict_standard_spark\n","    get_embeddings=get_embeddings\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 324, in pythonify_spark_dataframe\n","    anno_2_ex_config, self.light_pipe_configured, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 275, in unpack_and_apply_extractors\n","    return apply_extractors_and_merge(pdf.toPandas().applymap(extract_pyspark_rows), anno_2_ex_config,\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/pandas/conversion.py\", line 138, in toPandas\n","    pdf = pd.DataFrame.from_records(self.collect(), columns=self.columns)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 1032, in columns\n","    return [f.name for f in self.schema.fields]\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 256, in schema\n","    self._schema = _parse_datatype_json_string(self._jdf.schema().json())\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1305, in __call__\n","    answer, self.gateway_client, self.target_id, self.name)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\", line 128, in deco\n","    return f(*a, **kw)\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/protocol.py\", line 336, in get_return_value\n","    format(target_id, \".\", name))\n","py4j.protocol.Py4JError: An error occurred while calling o2740.schema\n","Exception occured\n","Traceback (most recent call last):\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 172, in __predict__\n","    drop_irrelevant_cols, return_spark_df, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 35, in __predict_standard_spark\n","    get_embeddings=get_embeddings\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 324, in pythonify_spark_dataframe\n","    anno_2_ex_config, self.light_pipe_configured, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 275, in unpack_and_apply_extractors\n","    return apply_extractors_and_merge(pdf.toPandas().applymap(extract_pyspark_rows), anno_2_ex_config,\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/pandas/conversion.py\", line 138, in toPandas\n","    pdf = pd.DataFrame.from_records(self.collect(), columns=self.columns)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 1032, in columns\n","    return [f.name for f in self.schema.fields]\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 256, in schema\n","    self._schema = _parse_datatype_json_string(self._jdf.schema().json())\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1305, in __call__\n","    answer, self.gateway_client, self.target_id, self.name)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\", line 128, in deco\n","    return f(*a, **kw)\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/protocol.py\", line 336, in get_return_value\n","    format(target_id, \".\", name))\n","py4j.protocol.Py4JError: An error occurred while calling o2740.schema\n","Exception occured\n","Traceback (most recent call last):\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 172, in __predict__\n","    drop_irrelevant_cols, return_spark_df, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 35, in __predict_standard_spark\n","    get_embeddings=get_embeddings\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 324, in pythonify_spark_dataframe\n","    anno_2_ex_config, self.light_pipe_configured, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 275, in unpack_and_apply_extractors\n","    return apply_extractors_and_merge(pdf.toPandas().applymap(extract_pyspark_rows), anno_2_ex_config,\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/pandas/conversion.py\", line 138, in toPandas\n","    pdf = pd.DataFrame.from_records(self.collect(), columns=self.columns)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 1032, in columns\n","    return [f.name for f in self.schema.fields]\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 256, in schema\n","    self._schema = _parse_datatype_json_string(self._jdf.schema().json())\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1305, in __call__\n","    answer, self.gateway_client, self.target_id, self.name)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\", line 128, in deco\n","    return f(*a, **kw)\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/protocol.py\", line 336, in get_return_value\n","    format(target_id, \".\", name))\n","py4j.protocol.Py4JError: An error occurred while calling o2740.schema\n","Exception occured\n","Traceback (most recent call last):\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 172, in __predict__\n","    drop_irrelevant_cols, return_spark_df, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 35, in __predict_standard_spark\n","    get_embeddings=get_embeddings\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 324, in pythonify_spark_dataframe\n","    anno_2_ex_config, self.light_pipe_configured, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 275, in unpack_and_apply_extractors\n","    return apply_extractors_and_merge(pdf.toPandas().applymap(extract_pyspark_rows), anno_2_ex_config,\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/pandas/conversion.py\", line 138, in toPandas\n","    pdf = pd.DataFrame.from_records(self.collect(), columns=self.columns)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 1032, in columns\n","    return [f.name for f in self.schema.fields]\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 256, in schema\n","    self._schema = _parse_datatype_json_string(self._jdf.schema().json())\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1305, in __call__\n","    answer, self.gateway_client, self.target_id, self.name)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\", line 128, in deco\n","    return f(*a, **kw)\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/protocol.py\", line 336, in get_return_value\n","    format(target_id, \".\", name))\n","py4j.protocol.Py4JError: An error occurred while calling o2740.schema\n","Exception occured\n","Traceback (most recent call last):\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 172, in __predict__\n","    drop_irrelevant_cols, return_spark_df, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 35, in __predict_standard_spark\n","    get_embeddings=get_embeddings\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 324, in pythonify_spark_dataframe\n","    anno_2_ex_config, self.light_pipe_configured, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 275, in unpack_and_apply_extractors\n","    return apply_extractors_and_merge(pdf.toPandas().applymap(extract_pyspark_rows), anno_2_ex_config,\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/pandas/conversion.py\", line 138, in toPandas\n","    pdf = pd.DataFrame.from_records(self.collect(), columns=self.columns)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 1032, in columns\n","    return [f.name for f in self.schema.fields]\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 256, in schema\n","    self._schema = _parse_datatype_json_string(self._jdf.schema().json())\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1305, in __call__\n","    answer, self.gateway_client, self.target_id, self.name)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\", line 128, in deco\n","    return f(*a, **kw)\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/protocol.py\", line 336, in get_return_value\n","    format(target_id, \".\", name))\n","py4j.protocol.Py4JError: An error occurred while calling o2740.schema\n","ERROR:nlu:Exception occured\n","Traceback (most recent call last):\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 172, in __predict__\n","    drop_irrelevant_cols, return_spark_df, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\", line 35, in __predict_standard_spark\n","    get_embeddings=get_embeddings\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 324, in pythonify_spark_dataframe\n","    anno_2_ex_config, self.light_pipe_configured, get_embeddings)\n","  File \"/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\", line 275, in unpack_and_apply_extractors\n","    return apply_extractors_and_merge(pdf.toPandas().applymap(extract_pyspark_rows), anno_2_ex_config,\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/pandas/conversion.py\", line 138, in toPandas\n","    pdf = pd.DataFrame.from_records(self.collect(), columns=self.columns)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 1032, in columns\n","    return [f.name for f in self.schema.fields]\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\", line 256, in schema\n","    self._schema = _parse_datatype_json_string(self._jdf.schema().json())\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\", line 1305, in __call__\n","    answer, self.gateway_client, self.target_id, self.name)\n","  File \"/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\", line 128, in deco\n","    return f(*a, **kw)\n","  File \"/usr/local/lib/python3.7/dist-packages/py4j/protocol.py\", line 336, in get_return_value\n","    format(target_id, \".\", name))\n","py4j.protocol.Py4JError: An error occurred while calling o2740.schema\n"]},{"output_type":"stream","name":"stdout","text":["No accepted Data type or usable columns found or applying the NLU models failed. \n","Make sure that the first column you pass to .predict() is the one that nlu should predict on OR rename the column you want to predict on to 'text'  \n","On try to reset restart Jupyter session and run the setup script again, you might have used too much memory\n","Full Stacktrace was (<class 'py4j.protocol.Py4JError'>, Py4JError('An error occurred while calling o2740.schema'), <traceback object at 0x7f2a8c8b0f50>)\n","Additional info:\n","<class 'py4j.protocol.Py4JError'> predict_helper.py 172\n","An error occurred while calling o2740.schema\n","Stuck? Contact us on Slack! https://join.slack.com/t/spark-nlp/shared_invite/zt-lutct9gm-kuUazcyFKhuGY3_0AMkxqA\n"]},{"output_type":"error","ename":"Exception","evalue":"ignored","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mPy4JError\u001b[0m                                 Traceback (most recent call last)","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\u001b[0m in \u001b[0;36m__predict__\u001b[0;34m(pipe, data, output_level, positions, keep_stranger_features, metadata, multithread, drop_irrelevant_cols, return_spark_df, get_embeddings)\u001b[0m\n\u001b[1;32m    171\u001b[0m             return __predict_standard_spark(pipe, data, output_level, positions, keep_stranger_features, metadata,\n\u001b[0;32m--> 172\u001b[0;31m                                             drop_irrelevant_cols, return_spark_df, get_embeddings)\n\u001b[0m\u001b[1;32m    173\u001b[0m         \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\u001b[0m in \u001b[0;36m__predict_standard_spark\u001b[0;34m(pipe, data, output_level, positions, keep_stranger_features, metadata, drop_irrelevant_cols, return_spark_df, get_embeddings)\u001b[0m\n\u001b[1;32m     34\u001b[0m                                           \u001b[0moutput_level\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0moutput_level\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 35\u001b[0;31m                                           \u001b[0mget_embeddings\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mget_embeddings\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     36\u001b[0m                                           )\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\u001b[0m in \u001b[0;36mpythonify_spark_dataframe\u001b[0;34m(self, processed, keep_stranger_features, stranger_features, drop_irrelevant_cols, output_metadata, positions, output_level, get_embeddings)\u001b[0m\n\u001b[1;32m    323\u001b[0m         processed = self.unpack_and_apply_extractors(processed, keep_stranger_features, stranger_features,\n\u001b[0;32m--> 324\u001b[0;31m                                                      anno_2_ex_config, self.light_pipe_configured, get_embeddings)\n\u001b[0m\u001b[1;32m    325\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\u001b[0m in \u001b[0;36munpack_and_apply_extractors\u001b[0;34m(self, pdf, keep_stranger_features, stranger_features, anno_2_ex_config, light_pipe_enabled, get_embeddings)\u001b[0m\n\u001b[1;32m    274\u001b[0m         \u001b[0;31m# Vanilla Spark Pipe\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 275\u001b[0;31m         return apply_extractors_and_merge(pdf.toPandas().applymap(extract_pyspark_rows), anno_2_ex_config,\n\u001b[0m\u001b[1;32m    276\u001b[0m                                           keep_stranger_features, stranger_features)\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/pandas/conversion.py\u001b[0m in \u001b[0;36mtoPandas\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    137\u001b[0m         \u001b[0;31m# Below is toPandas without Arrow optimization.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 138\u001b[0;31m         \u001b[0mpdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfrom_records\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcollect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    139\u001b[0m         \u001b[0mcolumn_counter\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCounter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\u001b[0m in \u001b[0;36mcolumns\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m   1031\u001b[0m         \"\"\"\n\u001b[0;32m-> 1032\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mf\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mschema\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfields\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1033\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\u001b[0m in \u001b[0;36mschema\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    255\u001b[0m             \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 256\u001b[0;31m                 \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_schema\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_parse_datatype_json_string\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_jdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mschema\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjson\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    257\u001b[0m             \u001b[0;32mexcept\u001b[0m \u001b[0mAttributeError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m   1304\u001b[0m         return_value = get_return_value(\n\u001b[0;32m-> 1305\u001b[0;31m             answer, self.gateway_client, self.target_id, self.name)\n\u001b[0m\u001b[1;32m   1306\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\u001b[0m in \u001b[0;36mdeco\u001b[0;34m(*a, **kw)\u001b[0m\n\u001b[1;32m    127\u001b[0m         \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 128\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    129\u001b[0m         \u001b[0;32mexcept\u001b[0m \u001b[0mpy4j\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPy4JJavaError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/py4j/protocol.py\u001b[0m in \u001b[0;36mget_return_value\u001b[0;34m(answer, gateway_client, target_id, name)\u001b[0m\n\u001b[1;32m    335\u001b[0m                 \u001b[0;34m\"An error occurred while calling {0}{1}{2}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 336\u001b[0;31m                 format(target_id, \".\", name))\n\u001b[0m\u001b[1;32m    337\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mPy4JError\u001b[0m: An error occurred while calling o2740.schema","\nDuring handling of the above exception, another exception occurred:\n","\u001b[0;31mException\u001b[0m                                 Traceback (most recent call last)","\u001b[0;32m<ipython-input-11-c35fe0f5ac4a>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mner_df\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnlu\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'ner'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moutput_level\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'chunk'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0mner_df\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/nlu/pipe/pipeline.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, data, output_level, positions, keep_stranger_features, metadata, multithread, drop_irrelevant_cols, return_spark_df, get_embeddings)\u001b[0m\n\u001b[1;32m    489\u001b[0m         \u001b[0;32mfrom\u001b[0m \u001b[0mnlu\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpipe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict_helper\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m__predict__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    490\u001b[0m         return __predict__(self, data, output_level, positions, keep_stranger_features, metadata, multithread,\n\u001b[0;32m--> 491\u001b[0;31m                            drop_irrelevant_cols, return_spark_df, get_embeddings)\n\u001b[0m\u001b[1;32m    492\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    493\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mprint_info\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mminimal\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/nlu/pipe/utils/predict_helper.py\u001b[0m in \u001b[0;36m__predict__\u001b[0;34m(pipe, data, output_level, positions, keep_stranger_features, metadata, multithread, drop_irrelevant_cols, return_spark_df, get_embeddings)\u001b[0m\n\u001b[1;32m    174\u001b[0m             \u001b[0mlogger\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwarning\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Predictions Failed={err}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    175\u001b[0m             \u001b[0mpipe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprint_exception_err\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 176\u001b[0;31m             \u001b[0;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Failure to process data with NLU\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    177\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    178\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mException\u001b[0m: Failure to process data with NLU"]}]},{"cell_type":"markdown","metadata":{"id":"6gC7S2vqBpT1"},"source":["### Top 50 Named Entities"]},{"cell_type":"code","metadata":{"id":"aKSSgTC-sVq8","executionInfo":{"status":"aborted","timestamp":1650025386505,"user_tz":-300,"elapsed":64,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["ner_df['entities@ner_results'].value_counts()[:100].plot.barh(figsize = (16,20))"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"B8oAF_MCBxyN"},"source":["### Top 50 Named Entities which are Countries/Cities/States"]},{"cell_type":"code","metadata":{"id":"IEiIMsFj9v2n","executionInfo":{"status":"aborted","timestamp":1650025386511,"user_tz":-300,"elapsed":68,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["\n","ner_df[ner_df['meta_entities@ner_entity'] == 'GPE']['entities@ner_results'].value_counts()[:50].plot.barh(figsize=(18,20), title ='Top 50 Occuring Countries/Cities/States in the dataset')"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"JiHofegqB0sM"},"source":["### Top 50 Named Entities which are PRODUCTS "]},{"cell_type":"code","metadata":{"id":"coeW-Kgs92fH","executionInfo":{"status":"aborted","timestamp":1650025386513,"user_tz":-300,"elapsed":70,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["ner_df[ner_df['meta_entities@ner_entity'] == 'PRODUCT']['entities@ner_results'].value_counts()[:50].plot.barh(figsize=(18,20), title ='Top 50 Occuring products in the dataset')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"4ng-TNYu--09","executionInfo":{"status":"aborted","timestamp":1650025386515,"user_tz":-300,"elapsed":71,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["ner_df[ner_df['meta_entities@ner_entity'] == 'ORG']['entities@ner_results'].value_counts()[:50].plot.barh(figsize=(18,20), title ='Top 50 products occuring in the dataset')"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"p73T7MyeU2kS"},"source":["## YAKE on COVID Tweet dataset\n","### The **YAKE!** model (Yet Another Keyword Extractor) is a **unsupervised** keyword extraction algorithm.\n","You can load it via   which you can load via `nlu.load('yake')`. It has no weights and is very fast.\n","It has various parameters that can be configured to influence which keywords are beeing extracted, [here for an more indepth YAKE guide](https://github.com/JohnSnowLabs/nlu/blob/master/examples/webinars_conferences_etc/multi_lingual_webinar/1_NLU_base_features_on_dataset_with_YAKE_Lemma_Stemm_classifiers_NER_.ipynb)"]},{"cell_type":"code","metadata":{"id":"Zu8-yar9VLqO","executionInfo":{"status":"aborted","timestamp":1650025386517,"user_tz":-300,"elapsed":72,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["yake_df = nlu.load('yake').predict(df.text)\n","yake_df"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"VJxjIrgdWZ0M"},"source":["### Top 50 extracted Keywords with YAKE!"]},{"cell_type":"code","metadata":{"id":"CMXkeiCLVo4u","executionInfo":{"status":"aborted","timestamp":1650025386520,"user_tz":-300,"elapsed":75,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["yake_df.explode('keywords_results').keywords_results.value_counts()[:50].plot.barh(title='Keyword Distribution in COVID twitter dataset', figsize = (16,20) )"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"gXoYzE_RBaaj"},"source":["## Binary Sentimental Analysis and Distribution on a dataset"]},{"cell_type":"code","metadata":{"id":"yjHx4TR3_SMe","executionInfo":{"status":"aborted","timestamp":1650025386523,"user_tz":-300,"elapsed":78,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["df = pd.read_csv('covid19_tweets.csv').fillna('na').iloc[:5000]\n","\n","sent_df = nlu.load('sentiment').predict(df)\n","sent_df"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"3LHQb5biErAv","executionInfo":{"status":"aborted","timestamp":1650025386524,"user_tz":-300,"elapsed":77,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["sent_df.sentiment_results.value_counts().plot.bar(title='Sentiment distribution')"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"3a3xxhUSCDhJ"},"source":["## Emotional Analysis and Distribution of Headlines "]},{"cell_type":"code","metadata":{"id":"rrYi4f1PEpV3","executionInfo":{"status":"aborted","timestamp":1650025386524,"user_tz":-300,"elapsed":77,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["emo_df = nlu.load('emotion').predict(df)\n","\n","emo_df"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"anyAVNjFCG9H","executionInfo":{"status":"aborted","timestamp":1650025386537,"user_tz":-300,"elapsed":89,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["emo_df.category_results.value_counts().plot.bar(title='Emotion Distribution')\n"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"MHfPEwbA4FrM"},"source":["**Make sure to restart your notebook again** before starting the next section\n"]},{"cell_type":"code","metadata":{"id":"yZQDoM1p4FS9","executionInfo":{"status":"aborted","timestamp":1650025386538,"user_tz":-300,"elapsed":90,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["print(\"Please restart kernel if you are in google colab and run next cell after the restart to configure java 8 back\")\n","1+'wait'\n"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"_kThBMV3LBhg"},"source":["# Let's apply some medical models to the COVID dataset!\n"]},{"cell_type":"markdown","metadata":{"id":"NcOss-wxREfR"},"source":["## Medical Named Entitiy recognition\n","The medical named entity recognizers are pretrained to extract various `medical` named entities. \n","Here are the medical classes it predicts : \n","\n","` Kidney_Disease, HDL, Diet, Test, Imaging_Technique, Triglycerides, Obesity, Duration, Weight, Social_History_Header, ImagingTest, Labour_Delivery, Disease_Syndrome_Disorder, Communicable_Disease, Overweight, Units, Smoking, Score, Substance_Quantity, Form, Race_Ethnicity, Modifier, Hyperlipidemia, ImagingFindings, Psychological_Condition, OtherFindings, Cerebrovascular_Disease, Date, Test_Result, VS_Finding, Employment, Death_Entity, Gender, Oncological, Heart_Disease, Medical_Device, Total_Cholesterol, ManualFix, Time, Route, Pulse, Admission_Discharge, RelativeDate, O2_Saturation, Frequency, RelativeTime, Hypertension, Alcohol, Allergen, Fetus_NewBorn, Birth_Entity, Age, Respiration, Medical_History_Header, Oxygen_Therapy, Section_Header, LDL, Treatment, Vital_Signs_Header, Direction, BMI, Pregnancy, Sexually_Active_or_Sexual_Orientation, Symptom, Clinical_Dept, Measurements, Height, Family_History_Header, Substance, Strength, Injury_or_Poisoning, Relationship_Status, Blood_Pressure, Drug, Temperature, EKG_Findings, Diabetes, BodyPart, Vaccine, Procedure, Dosage` "]},{"cell_type":"code","metadata":{"id":"8nug0OtXLBHf","executionInfo":{"status":"aborted","timestamp":1650025386540,"user_tz":-300,"elapsed":92,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["import pandas as pd \n","import nlu\n","df = pd.read_csv('covid19_tweets.csv').fillna('na')\n","vac_names = ['vaccine', 'Pfizer', 'BioNTech','Sinopharm','Sinovac','Moderna','Oxford', 'AstraZeneca','Covaxin','SputnikV']#,\n","\n","r = \"|\".join(vac_names)\n","f_d = df.fillna('na')[df.fillna('na').hashtags.str.contains(r ,flags=re.IGNORECASE, regex=True)]\n","\n","disease_df = nlu.load('med_ner.jsl.wip.clinical').predict(f_d.text.iloc[:2000], output_level='chunk',drop_irrelevant_cols=False)\n","\n","disease_df \n","\n","\n"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"3wQZmE9TlwjX","executionInfo":{"status":"aborted","timestamp":1650025386544,"user_tz":-300,"elapsed":96,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["disease_df['meta_entities@clinical_entity'].value_counts().plot.barh(figsize=(20,14),title='Distribution of predicted medical entity labels  ')"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"7ILw5508FR6h"},"source":["### Top 50 **named Entities of type vacine** found in the dataset\n","\n","The Medical named entity recognizer extracted various entities and classified them as vaccine"]},{"cell_type":"code","metadata":{"id":"7MLJumSlFQTo","executionInfo":{"status":"aborted","timestamp":1650025386550,"user_tz":-300,"elapsed":101,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["disease_df[disease_df['meta_entities@clinical_entity'] == 'Vaccine']['entities@clinical_results'].value_counts()[:50].plot.barh(figsize=(18,20), title ='Top 50 Occuring products in the dataset')"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"4xEMGtwctN4i"},"source":["### Top 50 **named entities of type symptom** found in the dataset\n","\n","The Medical named entity recognizer extracted various entities and classified them as vaccine"]},{"cell_type":"code","metadata":{"id":"dsWiyY99bzuK","executionInfo":{"status":"aborted","timestamp":1650025386552,"user_tz":-300,"elapsed":103,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["disease_df[disease_df['meta_entities@clinical_entity'] == 'Symptom']['entities@clinical_results'].value_counts().plot.barh(figsize=(18,20), title ='Top 50 Occuring smpyoms in the dataset')"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"n5j2Dw_CvdyG"},"source":["## Medical Entitiy resolution for `medcical procedures` \n","\n"," Let's mine the text data and extract relevant `procedures` and their `procedure icd 10 pcs codes` to understand what the twitter world is thinking about `treatment procedures` of COVID\n","\n","For this we are filtering for tweets that conain `vaccine`"]},{"cell_type":"code","metadata":{"id":"tBdsgVUydCSv","executionInfo":{"status":"aborted","timestamp":1650025386553,"user_tz":-300,"elapsed":104,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["vac_names = ['vaccine','Pfizer', 'BioNTech','Sinopharm','Sinovac','Moderna','Oxford', 'AstraZeneca','Covaxin','SputnikV']#,\n","symptoms = ['sick','cough','sore','fever', 'tired','diarrhoea','taste','smell','loss','rash','skin','breath','short','difficult','ventilator' ]\n","r = \"|\".join(symptoms + vac_names) \n","f_d = df[df.text.str.contains(r ,flags=re.IGNORECASE, regex=True)]\n","\n","\n","# Extract COVID procedures\n","resolve_df = nlu.load('med_ner.jsl.wip.clinical resolve.icd10pcs').predict(f_d, output_level='sentence')\n","resolve_df"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"LS9q0j78R_NY","executionInfo":{"status":"aborted","timestamp":1650025386554,"user_tz":-300,"elapsed":105,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["resolve_df.sentence_resolution_results.value_counts()[:50]\n"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"ZVusxTa3OJ6h"},"source":["### Top 50 medical proceduress resolved \n","\n","\n"]},{"cell_type":"code","metadata":{"id":"MA8AHgZxJyD-","executionInfo":{"status":"aborted","timestamp":1650025386555,"user_tz":-300,"elapsed":105,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["resolve_df.sentence_resolution_results.value_counts()[:50].plot.barh(title='Top 50 resolved procedures', figsize=(16,20))"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"SAz42g2DJd9S"},"source":["## Resolve Medical Symptoms"]},{"cell_type":"code","metadata":{"id":"loserzTXQkw1","executionInfo":{"status":"aborted","timestamp":1650025386556,"user_tz":-300,"elapsed":106,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["import pandas as pd \n","# java reset\n","! echo 2 |  update-alternatives --config java\n","! java -version\n","import nlu\n","import re\n","df = pd.read_csv('covid19_tweets.csv').fillna('na')\n","\n","\n","\n","vac_names = ['vaccine','sick','cough','sore','fever','Pfizer', 'BioNTech','Sinopharm','Sinovac','Moderna','Oxford', 'AstraZeneca','Covaxin','SputnikV']\n","symptoms = ['sick','cough','sore','fever', 'tired','diarrhoea','taste','smell','loss','rash','skin','breath','short','difficult','ventilator' ]\n","r = \"|\".join(symptoms+vac_names) \n","# f_d = df.fillna('na')[df.fillna('na').hashtags.str.contains(r ,flags=re.IGNORECASE, regex=True)]\n","f_d = df[df.text.str.contains(r ,flags=re.IGNORECASE, regex=True)]\n","f_d\n","\n","\n","resolve_df = nlu.load('med_ner.jsl.wip.clinical resolve.icd10cm').predict(f_d[:2000], output_level='sentence')\n","resolve_df"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"39sHQNpFBD2v"},"source":["### Top 50 Medical symptoms"]},{"cell_type":"code","metadata":{"id":"2StNqCUcAdz8","executionInfo":{"status":"aborted","timestamp":1650025386558,"user_tz":-300,"elapsed":108,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["resolve_df.sentence_resolution_results.value_counts()[:50].plot.barh(title='Top 50 resolved procedures', figsize=(16,20))"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"JJNLjhrjYAFV"},"source":["## Assert status of medical entities"]},{"cell_type":"code","metadata":{"id":"t6jKxxEkX_bt","executionInfo":{"status":"aborted","timestamp":1650025386561,"user_tz":-300,"elapsed":111,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["\n","df = pd.read_csv('covid19_tweets.csv').fillna('na')\n","\n","vac_names = ['vaccine','sick','cough','sore','fever','Pfizer', 'BioNTech','Sinopharm','Sinovac','Moderna','Oxford', 'AstraZeneca','Covaxin','SputnikV']\n","symptoms = ['sick','cough','sore','fever', 'tired','diarrhoea','taste','smell','loss','rash','skin','breath','short','difficult','ventilator' ]\n","r = \"|\".join(symptoms+vac_names) \n","f_d = df[df.text.str.contains(r ,flags=re.IGNORECASE, regex=True)]\n","f_d\n","\n","assert_df = nlu.load('med_ner.jsl.wip.clinical assert').predict(f_d[:2000], output_level='chunk')\n","assert_df"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"BIMUo8XOXw8i"},"source":["## Extract relation between entities"]},{"cell_type":"code","metadata":{"id":"0JmDnL2fYVFr","executionInfo":{"status":"aborted","timestamp":1650025386563,"user_tz":-300,"elapsed":112,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["\n","import pandas as pd \n","import nlu\n","import re\n","df = pd.read_csv('covid19_tweets.csv').fillna('na')\n","\n","vac_names = ['vaccine','sick','cough','sore','fever','Pfizer', 'BioNTech','Sinopharm','Sinovac','Moderna','Oxford', 'AstraZeneca','Covaxin','SputnikV']\n","symptoms = ['sick','cough','sore','fever', 'tired','diarrhoea','taste','smell','loss','rash','skin','breath','short','difficult','ventilator' ]\n","r = \"|\".join(symptoms+vac_names) \n","f_d = df[df.text.str.contains(r ,flags=re.IGNORECASE, regex=True)]\n","f_d\n","\n","\n","relation_df = nlu.load('med_ner.jsl.wip.clinical en.relation.bodypart.problem ').predict(f_d[:2000], output_level='relation')\n","relation_df\n"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"lRA-zGz2D6N_"},"source":["**Make sure to restart your notebook again** before starting the next section\n"]},{"cell_type":"code","metadata":{"id":"ajINWfeC0jT2","executionInfo":{"status":"aborted","timestamp":1650025386565,"user_tz":-300,"elapsed":114,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["print(\"Please restart kernel if you are in google colab and run next cell after the restart to configure java 8 back\")\n","1+'wait'\n"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"rN_H9hKmApll"},"source":["# Answer **Closed Book** and Open **Book Questions** with Google's T5!\n","\n","<!-- [T5]() -->\n","![T5 GIF](https://1.bp.blogspot.com/-o4oiOExxq1s/Xk26XPC3haI/AAAAAAAAFU8/NBlvOWB84L0PTYy9TzZBaLf6fwPGJTR0QCLcBGAsYHQ/s1600/image3.gif)\n","\n","You can load the **question answering** model with `nlu.load('en.t5')`"]},{"cell_type":"code","metadata":{"id":"sKmud8AHN9yo","executionInfo":{"status":"aborted","timestamp":1650025386566,"user_tz":-300,"elapsed":115,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# Load question answering T5 model\n","t5_closed_question = nlu.load('en.t5')"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"-F9rrWbfNyPZ"},"source":["## Answer **Closed Book Questions**  \n","Closed book means that no additional context is given and the model must answer the question with the knowledge stored in it's weights"]},{"cell_type":"code","metadata":{"id":"QsvnphOwfzVQ","executionInfo":{"status":"aborted","timestamp":1650025386566,"user_tz":-300,"elapsed":115,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["t5_closed_question.predict(\"Who is president of Nigeria?\")"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"DcTbqAGmM6YY","executionInfo":{"status":"aborted","timestamp":1650025386567,"user_tz":-300,"elapsed":115,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["t5_closed_question.predict(\"What is the most common language in India?\")"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"2Rb4EhK_NAb3","executionInfo":{"status":"aborted","timestamp":1650025386567,"user_tz":-300,"elapsed":114,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["t5_closed_question.predict(\"What is the capital of Germany?\")"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"ogxJNa5MOOQj"},"source":["## Answer **Open Book Questions** \n","These are questions where we give the model some additional context, that is used to answer the question"]},{"cell_type":"code","metadata":{"id":"e9cwqQGtaTa5","executionInfo":{"status":"aborted","timestamp":1650025386568,"user_tz":-300,"elapsed":115,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["t5_open_book = nlu.load('answer_question')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"OB5GOHxPYUYM","executionInfo":{"status":"aborted","timestamp":1650025386569,"user_tz":-300,"elapsed":114,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["context   = 'Peters last week was terrible! He had an accident and broke his leg while skiing!'\n","question1  = 'Why was peters week so bad?' \n","question2  = 'How did peter broke his leg?' \n","\n","t5_open_book.predict([question1+context, question2 + context]) "],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"kZb_BdGm1-yc","executionInfo":{"status":"aborted","timestamp":1650025386570,"user_tz":-300,"elapsed":115,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# Ask T5 questions in the context of a News Article\n","question1 = 'Who is Jack ma?'\n","question2 = 'Who is founder of Alibaba Group?'\n","question3 = 'When did Jack Ma re-appear?'\n","question4 = 'How did Alibaba stocks react?'\n","question5 = 'Whom did Jack Ma meet?'\n","question6 = 'Who did Jack Ma hide from?'\n","\n","\n","# from https://www.bbc.com/news/business-55728338 \n","news_article_context = \"\"\" context:\n","Alibaba Group founder Jack Ma has made his first appearance since Chinese regulators cracked down on his business empire.\n","His absence had fuelled speculation over his whereabouts amid increasing official scrutiny of his businesses.\n","The billionaire met 100 rural teachers in China via a video meeting on Wednesday, according to local government media.\n","Alibaba shares surged 5% on Hong Kong's stock exchange on the news.\n","\"\"\"\n","\n","questions = [\n","             question1+ news_article_context,\n","             question2+ news_article_context,\n","             question3+ news_article_context,\n","             question4+ news_article_context,\n","             question5+ news_article_context,\n","             question6+ news_article_context,]\n","\n"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"e0kTj4ZN4kJi","executionInfo":{"status":"aborted","timestamp":1650025386571,"user_tz":-300,"elapsed":115,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["t5_open_book.predict(questions)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"xJIuT3ZhOhoc"},"source":["# Multi Problem T5 model for Summarization and more\n","The main T5 model was trained for over 20 tasks from the SQUAD/GLUE/SUPERGLUE datasets. See [this notebook](https://github.com/JohnSnowLabs/nlu/blob/master/examples/webinars_conferences_etc/multi_lingual_webinar/7_T5_SQUAD_GLUE_SUPER_GLUE_TASKS.ipynb) for a demo of all tasks \n","\n","\n","# Overview of every task available with T5\n","[The T5 model](https://arxiv.org/pdf/1910.10683.pdf) is trained on various datasets for 17 different tasks which fall into 8 categories.\n","\n","\n","\n","1. Text summarization\n","2. Question answering\n","3. Translation\n","4. Sentiment analysis\n","5. Natural Language inference\n","6. Coreference resolution\n","7. Sentence Completion\n","8. Word sense disambiguation\n","\n","### Every T5 Task with explanation:\n","|Task Name | Explanation | \n","|----------|--------------|\n","|[1.CoLA](https://nyu-mll.github.io/CoLA/)                   | Classify if a sentence is gramaticaly correct|\n","|[2.RTE](https://dl.acm.org/doi/10.1007/11736790_9)                    | Classify whether if a statement can be deducted from a sentence|\n","|[3.MNLI](https://arxiv.org/abs/1704.05426)                   | Classify for a hypothesis and premise whether they contradict or contradict each other or neither of both (3 class).|\n","|[4.MRPC](https://www.aclweb.org/anthology/I05-5002.pdf)                   | Classify whether a pair of sentences is a re-phrasing of each other (semantically equivalent)|\n","|[5.QNLI](https://arxiv.org/pdf/1804.07461.pdf)                   | Classify whether the answer to a question can be deducted from an answer candidate.|\n","|[6.QQP](https://www.quora.com/q/quoradata/First-Quora-Dataset-Release-Question-Pairs)                    | Classify whether a pair of questions is a re-phrasing of each other (semantically equivalent)|\n","|[7.SST2](https://www.aclweb.org/anthology/D13-1170.pdf)                   | Classify the sentiment of a sentence as positive or negative|\n","|[8.STSB](https://www.aclweb.org/anthology/S17-2001/)                   | Classify the sentiment of a sentence on a scale from 1 to 5 (21 Sentiment classes)|\n","|[9.CB](https://ojs.ub.uni-konstanz.de/sub/index.php/sub/article/view/601)                     | Classify for a premise and a hypothesis whether they contradict each other or not (binary).|\n","|[10.COPA](https://www.aaai.org/ocs/index.php/SSS/SSS11/paper/view/2418/0)                   | Classify for a question, premise, and 2 choices which choice the correct choice is (binary).|\n","|[11.MultiRc](https://www.aclweb.org/anthology/N18-1023.pdf)                | Classify for a question, a paragraph of text, and an answer candidate, if the answer is correct (binary),|\n","|[12.WiC](https://arxiv.org/abs/1808.09121)                    | Classify for a pair of sentences and a disambigous word if the word has the same meaning in both sentences.|\n","|[13.WSC/DPR](https://www.aaai.org/ocs/index.php/KR/KR12/paper/view/4492/0)       | Predict for an ambiguous pronoun in a sentence what it is referring to.  |\n","|[14.Summarization](https://arxiv.org/abs/1506.03340)          | Summarize text into a shorter representation.|\n","|[15.SQuAD](https://arxiv.org/abs/1606.05250)                  | Answer a question for a given context.|\n","|[16.WMT1.](https://arxiv.org/abs/1706.03762)                  | Translate English to German|\n","|[17.WMT2.](https://arxiv.org/abs/1706.03762)                   | Translate English to French|\n","|[18.WMT3.](https://arxiv.org/abs/1706.03762)                   | Translate English to Romanian|\n","\n"]},{"cell_type":"code","metadata":{"id":"XJw187r91QKN","executionInfo":{"status":"aborted","timestamp":1650025386572,"user_tz":-300,"elapsed":115,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# Load the Multi Task Model T5\n","t5_multi = nlu.load('en.t5.base')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"_F6jE7IN1U-G","executionInfo":{"status":"aborted","timestamp":1650025386573,"user_tz":-300,"elapsed":116,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# https://www.reuters.com/article/instant-article/idCAKBN2AA2WF\n","text = \"\"\"(Reuters) - Mastercard Inc said on Wednesday it was planning to offer support for some cryptocurrencies on its network this year, joining a string of big-ticket firms that have pledged similar support.\n","\n","The credit-card giant’s announcement comes days after Elon Musk’s Tesla Inc revealed it had purchased $1.5 billion of bitcoin and would soon accept it as a form of payment.\n","\n","Asset manager BlackRock Inc and payments companies Square and PayPal have also recently backed cryptocurrencies.\n","\n","Mastercard already offers customers cards that allow people to transact using their cryptocurrencies, although without going through its network.\n","\n","\"Doing this work will create a lot more possibilities for shoppers and merchants, allowing them to transact in an entirely new form of payment. This change may open merchants up to new customers who are already flocking to digital assets,\" Mastercard said. (mstr.cd/3tLaPZM)\n","\n","Mastercard specified that not all cryptocurrencies will be supported on its network, adding that many of the hundreds of digital assets in circulation still need to tighten their compliance measures.\n","\n","Many cryptocurrencies have struggled to win the trust of mainstream investors and the general public due to their speculative nature and potential for money laundering.\n","\"\"\"\n","t5_multi['t5'].setTask('summarize ') \n","short = t5_multi.predict(text)\n","short"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"1MtQlr_8PucN","executionInfo":{"status":"aborted","timestamp":1650025386573,"user_tz":-300,"elapsed":115,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["print(f\"Original Length {len(short.document.iloc[0])}   Summarized Length : {len(short.T5.iloc[0])} \\n summarized text :{short.T5.iloc[0]} \")\n"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"ZqOJSkrWQQA9","executionInfo":{"status":"aborted","timestamp":1650025386574,"user_tz":-300,"elapsed":116,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["short.T5.iloc[0]"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Sd_4hzC9hz8K"},"source":["**Make sure to restart your notebook again** before starting the next section"]},{"cell_type":"code","metadata":{"id":"RQizVR2WhzTY","executionInfo":{"status":"aborted","timestamp":1650025386576,"user_tz":-300,"elapsed":117,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["print(\"Please restart kernel if you are in google colab and run next cell after the restart to configure java 8 back\")\n","1+'wait'\n"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"41bGg_s0ioKK","executionInfo":{"status":"aborted","timestamp":1650025386578,"user_tz":-300,"elapsed":118,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# This configures colab to use Java 8 again. \n","# You need to run this in Google colab, because after restart it likes to set Java 11 as default, which will cause issues\n","! echo 2 |  update-alternatives --config java\n"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"PDmjkRoHhrqn"},"source":["# Translate between more than 200 Languages with  [ Microsofts Marian Models](https://marian-nmt.github.io/publications/)\n","\n","Marian is an efficient, free Neural Machine Translation framework mainly being developed by the Microsoft Translator team (646+ pretrained models & pipelines in 192+ languages)\n","You need to specify the language your data is in as `start_language` and the language you want to translate to as `target_language`.    \n"," The language references must be [ISO language codes](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)\n","\n","`nlu.load('<start_language>.translate_to.<target_language>')`       \n","\n","**Translate Turkish to English:**     \n","`nlu.load('tr.translate_to.en')`\n","\n","**Translate English to French:**     \n","`nlu.load('en.translate_to.fr')`\n","\n","\n","**Translate French to Hebrew:**     \n","`nlu.load('fr.translate_to.he')`\n","\n","\n","\n","\n","\n","![Languages](https://camo.githubusercontent.com/b548abf3d1f9657d01fd74404354ec49fc11eea0/687474703a2f2f636b6c2d69742e64652f77702d636f6e74656e742f75706c6f6164732f323032312f30322f666c6167732e6a706567)"]},{"cell_type":"code","metadata":{"id":"AjiWgkvQwxBy","executionInfo":{"status":"aborted","timestamp":1650025386579,"user_tz":-300,"elapsed":118,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["import nlu\n","import pandas as pd\n","!wget http://ckl-it.de/wp-content/uploads/2020/12/small_btc.csv \n","df = pd.read_csv('/content/small_btc.csv').iloc[0:20].title"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Q_dx5jDkeaGO"},"source":["## Translate to German"]},{"cell_type":"code","metadata":{"id":"_DrnIRUlXpM6","executionInfo":{"status":"aborted","timestamp":1650025386579,"user_tz":-300,"elapsed":118,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["translate_pipe = nlu.load('en.translate_to.de')\n","translate_pipe.predict(df)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"9zyhBUxFeP6u"},"source":["## Translate to Chinese"]},{"cell_type":"code","metadata":{"id":"B0Z3Ilt0eR3c","executionInfo":{"status":"aborted","timestamp":1650025386580,"user_tz":-300,"elapsed":119,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["translate_pipe = nlu.load('en.translate_to.zh')\n","translate_pipe.predict(df)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"SbE1KJQgeTiB"},"source":["## Translate to Hindi"]},{"cell_type":"code","metadata":{"id":"5U2Xy6JAeXcj","executionInfo":{"status":"aborted","timestamp":1650025386581,"user_tz":-300,"elapsed":119,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["translate_pipe = nlu.load('en.translate_to.hi')\n","translate_pipe.predict(df)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"50Ap0BIujDWr"},"source":["# Train a Multi Lingual Classifier for 100+ languages from a dataset with just one language\n","\n","[Leverage Language-agnostic BERT Sentence Embedding (LABSE)​ and acheive state of the art!](https://arxiv.org/abs/2007.01852) ​  ​  \n","\n","Training a classifier with LABSE embeddings enables the knowledge to be transferred to 109 languages!\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator)  from Spark NLP you can achieve State Of the Art results on any binary class text classification problem.\n","\n","### Languages suppoted by LABSE\n","![labse languages](http://ckl-it.de/wp-content/uploads/2021/02/LABSE.png)\n","\n"]},{"cell_type":"code","metadata":{"id":"y4xSRWIhwT28","executionInfo":{"status":"aborted","timestamp":1650025386582,"user_tz":-300,"elapsed":120,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# Download French twitter  Sentiment dataset  https://www.kaggle.com/hbaflast/french-twitter-sentiment-analysis\n","! wget http://ckl-it.de/wp-content/uploads/2021/02/french_tweets.csv\n","\n","import pandas as pd\n","\n","train_path = '/content/french_tweets.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","columns=['text','y']\n","train_df = train_df[columns]\n","train_df = train_df.sample(frac=1).reset_index(drop=True)\n","train_df"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["## Train Deep Learning Classifier using `nlu.load('train.sentiment')`\n","\n","Al you need is a Pandas Dataframe with a label column named `y` and the column with text data should be named `text`\n","\n","We are training on a french dataset and can then predict classes correct **in 100+ langauges**"]},{"cell_type":"code","metadata":{"id":"mptfvHx-MMMX","executionInfo":{"status":"aborted","timestamp":1650025386583,"user_tz":-300,"elapsed":121,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# Train longer!\n","trainable_pipe = nlu.load('xx.embed_sentence.labse train.sentiment')\n","trainable_pipe['sentiment_dl'].setMaxEpochs(60)  \n","trainable_pipe['sentiment_dl'].setLr(0.005) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:2000])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:2000],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["### Test the fitted pipe on new example"]},{"cell_type":"markdown","metadata":{"id":"RjtuNUcvuJTT"},"source":["#### The Model understands Englsih\n","![en](https://www.worldometers.info/img/flags/small/tn_nz-flag.gif)"]},{"cell_type":"code","metadata":{"id":"o0vu7PaWkcI7","executionInfo":{"status":"aborted","timestamp":1650025386584,"user_tz":-300,"elapsed":122,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["fitted_pipe.predict(\"This was awful!\")"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"1ykjRQhCtQ4w","executionInfo":{"status":"aborted","timestamp":1650025386586,"user_tz":-300,"elapsed":123,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["fitted_pipe.predict(\"This was great!\")"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"vohym-XbuNHn"},"source":["#### The Model understands German\n","![de](https://www.worldometers.info/img/flags/small/tn_gm-flag.gif)"]},{"cell_type":"code","metadata":{"id":"dzaaZrI4tVWc","executionInfo":{"status":"aborted","timestamp":1650025386586,"user_tz":-300,"elapsed":123,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# German for:' this movie was great!'\n","fitted_pipe.predict(\"Der Film war echt klasse!\")"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"BbhgTSBGtTtJ","executionInfo":{"status":"aborted","timestamp":1650025386587,"user_tz":-300,"elapsed":123,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# German for: 'This movie was really boring'\n","fitted_pipe.predict(\"Der Film war echt langweilig!\")"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"a1JbtmWquQwj"},"source":["#### The Model understands Chinese\n","![zh](https://www.worldometers.info/img/flags/small/tn_ch-flag.gif)"]},{"cell_type":"code","metadata":{"id":"kYSYqtoRtc-P","executionInfo":{"status":"aborted","timestamp":1650025386587,"user_tz":-300,"elapsed":123,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# Chinese for: \"This model was awful!\"\n","fitted_pipe.predict(\"这部电影太糟糕了！\")"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"06v9SD-QtlBU","executionInfo":{"status":"aborted","timestamp":1650025386587,"user_tz":-300,"elapsed":122,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# Chine for : \"This move was great!\"\n","fitted_pipe.predict(\"此举很棒！\")\n"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"9h7CvN4uu9Pb"},"source":["#### Model understanda Afrikaans\n","\n","![af](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)\n","\n"]},{"cell_type":"code","metadata":{"id":"VMPhbgw9twtf","executionInfo":{"status":"aborted","timestamp":1650025386588,"user_tz":-300,"elapsed":123,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# Afrikaans for 'This movie was amazing!'\n","fitted_pipe.predict(\"Hierdie film was ongelooflik!\")\n"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"zWgNTIdkumhX","executionInfo":{"status":"aborted","timestamp":1650025386588,"user_tz":-300,"elapsed":122,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# Afrikaans for :'The movie made me fall asleep, it's awful!'\n","fitted_pipe.predict('Die film het my aan die slaap laat raak, dit is verskriklik!')"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"rSEPkC-Bwnpg"},"source":["#### The model understands Vietnamese\n","![vi](https://www.worldometers.info/img/flags/small/tn_vm-flag.gif)"]},{"cell_type":"code","metadata":{"id":"wCcTS5gIu511","executionInfo":{"status":"aborted","timestamp":1650025386589,"user_tz":-300,"elapsed":123,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["# Vietnamese for : 'The movie was painful to watch'\n","fitted_pipe.predict('Phim đau điếng người xem')\n"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"M6giDPK-wm2G","executionInfo":{"status":"aborted","timestamp":1650025386589,"user_tz":-300,"elapsed":122,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["\n","# Vietnamese for : 'This was the best movie ever'\n","fitted_pipe.predict('Đây là bộ phim hay nhất từ ​​trước đến nay')"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"IlkmAaMoxTuy"},"source":["#### The model understands Japanese\n","![ja](https://www.worldometers.info/img/flags/small/tn_ja-flag.gif)\n"]},{"cell_type":"code","metadata":{"id":"1IfJu3q8wwUt","executionInfo":{"status":"aborted","timestamp":1650025386590,"user_tz":-300,"elapsed":122,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["\n","# Japanese for : 'This is now my favorite movie!'\n","fitted_pipe.predict('これが私のお気に入りの映画です！')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"h3k7_PFhxOve","executionInfo":{"status":"aborted","timestamp":1650025386590,"user_tz":-300,"elapsed":122,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["\n","# Japanese for : 'I would rather kill myself than watch that movie again'\n","fitted_pipe.predict('その映画をもう一度見るよりも自殺したい')"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"VXu21c0iQRSC"},"source":["# There are many more models you can put to use in 1 line of code!\n","## Checkout [the Modelshub](https://nlp.johnsnowlabs.com/models) and the [NLU Namespace](https://nlu.johnsnowlabs.com/docs/en/spellbook) for more models\n","\n","\n","### More ressources \n","- [Join our Slack](https://join.slack.com/t/spark-nlp/shared_invite/zt-lutct9gm-kuUazcyFKhuGY3_0AMkxqA)\n","- [NLU Website](https://nlu.johnsnowlabs.com/)\n","- [NLU Github](https://github.com/JohnSnowLabs/nlu)\n","- [Many more NLU example tutorials](https://github.com/JohnSnowLabs/nlu/tree/master/examples)\n","- [Overview of every powerful nlu 1-liner](https://nlu.johnsnowlabs.com/docs/en/examples)\n","- [Checkout the Modelshub for an overview of all models](https://nlp.johnsnowlabs.com/models) \n","- [Checkout the NLU Namespace where you can find every model as a tabel](https://nlu.johnsnowlabs.com/docs/en/spellbook)\n","- [Intro to NLU article](https://medium.com/spark-nlp/1-line-of-code-350-nlp-models-with-john-snow-labs-nlu-in-python-2f1c55bba619)\n","- [Indepth and easy Sentence Similarity Tutorial, with StackOverflow Questions using BERTology embeddings](https://medium.com/spark-nlp/easy-sentence-similarity-with-bert-sentence-embeddings-using-john-snow-labs-nlu-ea078deb6ebf)\n","- [1 line of Python code for BERT, ALBERT, ELMO, ELECTRA, XLNET, GLOVE, Part of Speech with NLU and t-SNE](https://medium.com/spark-nlp/1-line-of-code-for-bert-albert-elmo-electra-xlnet-glove-part-of-speech-with-nlu-and-t-sne-9ebcd5379cd)"]},{"cell_type":"code","metadata":{"id":"R8hBZm_zo5EI","executionInfo":{"status":"aborted","timestamp":1650025386591,"user_tz":-300,"elapsed":122,"user":{"displayName":"ahmed lone","userId":"02458088882398909889"}}},"source":["while 1 : 1 "],"execution_count":null,"outputs":[]}]}